/**
 * 目标：基于 Web 服务，开发-城市列表数据接口
 * 步骤：
 *  1. 判断 req.url 资源路径+查询字符串，路径前缀匹配/api/city
 *  2. 借助 querystring 模块的方法，格式化查询参数字符串
 *  3. 读取 city.json 城市数据，匹配省份名字下属城市列表
 *  4. 返回城市列表，启动 Web 服务测试
 */
/**
 * 目标：基于 Web 服务，开发-城市列表数据接口
 * 步骤：
 *  1. 判断 req.url 资源路径+查询字符串，路径前缀匹配/api/city
 *  2. 借助 querystring 模块的方法，格式化查询参数字符串
 *  3. 读取 city.json 城市数据，匹配省份名字下属城市列表
 *  4. 返回城市列表，启动 Web 服务测试
 */
/**
 * 目标：基于 Web 服务，开发-城市列表数据接口
 * 步骤：
 *  1. 判断 req.url 资源路径+查询字符串，路径前缀匹配/api/city
 *  2. 借助 querystring 模块的方法，格式化查询参数字符串
 *  3. 读取 city.json 城市数据，匹配省份名字下属城市列表
 *  4. 返回城市列表，启动 Web 服务测试
 */
/**
 * 目标：基于 Web 服务，开发-城市列表数据接口
 * 步骤：
 *  1. 判断 req.url 资源路径+查询字符串，路径前缀匹配/api/city
 *  2. 借助 querystring 模块的方法，格式化查询参数字符串
 *  3. 读取 city.json 城市数据，匹配省份名字下属城市列表
 *  4. 返回城市列表，启动 Web 服务测试
 */

const http = require('http')
const fs = require('fs')
const path = require('path')
const server = http.createServer()
const qs = require('querystring')

//请求服务器返回状态
server.on('request', (req, res) => {
  // console.log('有人来请求了:',req.url)
  if (req.url === '/api/province') {
    fs.readFile(path.join(__dirname, 'data/province.json'), (err, data) => {
      if (err) console.log(err)
      // console.log(data.toString())
      res.setHeader('Content-Type', 'application/json')
      res.end(data.toString())
    })
  } else if (req.url.startsWith('/api/city')) {
    // console.log(req.url) 获取请求地址
    const paramsStr = req.url.split('?')[1] //用?切割地址
    const paramsObj = qs.parse(paramsStr)
    console.log(paramsObj.pname)
    const pname = paramsObj.pname
    fs.readFile(path.join(__dirname, 'data/city.json'), (err, data) => {
      if (err) return console.log(err)
      // console.log(data.toString())

      const cityObj = JSON.parse(data.toString()) //转换为JSON对象
      // console.log(cityObj[pname])
      const cityList = cityObj[pname]
      //返回城市列表，启动 web服务测试
      res.setHeader('Content-Type', 'application/json')
      res.end(JSON.stringify(cityList))
    })

  } else {
    res.end('404 not found')
  }
})

server.listen(8080, () => {
  console.log('服务器已启动')
})